<?php

namespace App\Http\Controllers\Content;

use App\Models\ArticleModel;
use App\Models\CategoryModel;
use App\Models\ContentTemplateModel;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class HomeController extends Controller
{
//        定义一个构造函数指定当前控制器渲染模板的时候查找view视图的位置
    public function __construct(ContentTemplateModel $template)
    {
        $finder = app('view')->getFinder();
        //通过调用template模型中的getDirAttribute方法,可以获取当前正在使用的模板的绝对路径
        $homepath = str_replace('/','\\',$template->dir);
        //使用下面的方法执行在这个控制器中渲染视图的时候在指定的$homepath路径下面加载,而不再是系统的默认渲染视图路径
        $finder->prependLocation($homepath);
    }


    public function index(){
        //渲染模板
        return view('index');
    }

    //栏目方法
    public function category(CategoryModel $category){
        //通过依赖注入的方式获取到当前要展示的栏目,然后获取展示该栏目的模板
        //判断当前栏目是不是封面栏目(is_home),如果是封面栏目就用封面栏目模板,否则就用list_template模板
        $template = $category['is_home']?$category['home_template']:$category['list_template'];
        //以分页的方式获取当前栏目下的所有文章
        $articles = ArticleModel::where('category_id',$category['id'])->paginate(6);
        //渲染相应视图模板并把当前栏目和当前栏目下所有文章的数据传递到相应视图模板中
        return view($template,compact('category','articles'));
    }
    //文章展示的方法.
    //在article文章表中有个article_template字段,可以存放当前文章的自定义模板,如果这里没有定义就使用文章所在栏目的content内容模板展示文章
    public function content(ArticleModel $article){
        return view($article->template,compact('article'));

    }


}
